package syg._01_activiti_main;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.junit.Test;

/**
 * 使用main方法创建activiti的需要的表
 * @author SYG
 */
public class _01_Main {

    /**
     * 生成activiti需要的表,共计25张表
     * 流程 、job 、task 、 节点的关系是什么？
     *
     * ###
     *
     * | **表分类**   | **表名**              | **解释**                                           |
     * | ------------ | --------------------- | -------------------------------------------------- |
     * | 一般数据     |                       |                                                    |
     * |              | [ACT_GE_BYTEARRAY]    | 通用的流程定义和流程资源                           |
     * |              | [ACT_GE_PROPERTY]     | 系统相关属性                                       |
     * | 流程历史记录 |                       |                                                    |
     * |              | [ACT_HI_ACTINST]      | 历史的流程实例执行的任务                                     |
     * |              | [ACT_HI_ATTACHMENT]   | 历史的流程附件                                     |
     * |              | [ACT_HI_COMMENT]      | 历史的说明性信息                                   |
     * |              | [ACT_HI_DETAIL]       | 历史的流程运行中的细节信息                         |
     * |              | [ACT_HI_IDENTITYLINK] | 历史的流程运行过程中用户关系                       |
     * |              | [ACT_HI_PROCINST]     | 历史的流程实例                                     |
     * |              | [ACT_HI_TASKINST]     | 历史的任务实例                                     |
     * |              | [ACT_HI_VARINST]      | 历史的流程运行中的变量信息                         |
     * | 流程定义表   |                       |                                                    |
     * |              | [ACT_RE_DEPLOYMENT]   | 部署单元信息                                       |
     * |              | [ACT_RE_MODEL]        | 模型信息                                           |
     * |              | [ACT_RE_PROCDEF]      | 已部署的流程定义(一个流程定义,可以有多个流程实例)       |
     * | 运行实例表   |                       |                                                    |
     * |              | [ACT_RU_EVENT_SUBSCR] | 运行时事件                                         |
     * |              | [ACT_RU_EXECUTION]    | 运行时流程执行实例                                 |
     * |              | [ACT_RU_IDENTITYLINK] | 运行时用户关系信息，存储任务节点与参与者的相关信息 |
     * |              | [ACT_RU_JOB]          | 运行时作业                                         |
     * |              | [ACT_RU_TASK]         | 运行时任务                                         |
     * |              | [ACT_RU_VARIABLE]     | 运行时变量表                                       |
     *
     *
     * 1,默认方式创建ProcessEngine对象,
     *      缺点
     *          1,配置文件名字不能修改
     *          2,配置文件位置不能修改
     *
     * @param args
     */
    @Test
    public void test1() {
        // getDefaultProcessEngine() 会默认从resource下读取名字为activiti.cfg.xml的配置文件
        // 获取流程引擎对象,(创建ProcessEngine时,就会创建mysql需要的表)
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        System.out.println(processEngine);
    }

    /**
     * 2,自定义方式创建ProcessEngine对象,
     *      优点
     *          1,配置文件名字任意写
     *          2,配置文件位置任意改变
     *          3,bean的名字也可以自定义
     */
    @Test
    public void test2() {
        ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        // 获取流程引擎对象,(创建ProcessEngine时,就会创建mysql需要的表)
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        System.out.println(processEngine);
    }
}
